Dynamic head offset selection for tape drive

ABSTRACT

A method and system for adjusting a servo head in a tape drive is disclosed. Position information for the servo head can be obtained and used to determine if an adjustment of one of the servo heads is necessary. By comparing the position of the tape against two servo heads, erroneous adjustments to the servo head can be obviated.

BACKGROUND

The present disclosure is related to dynamic offset selection of tapedrive servo heads and track following control. A tape drive is a storagedevice that reads and writes data on a magnetic tape. Magnetic tapestorage can be used for archival data storage, is fairly economical, andhas reliable archival stability. A tape drive provides sequential accessstorage, and physically winds tape between reels to read a particularpiece of data. Track following control can be important for thereliability of data both read and recorded from a tape drive.

SUMMARY

The following presents a simplified summary of the disclosure in orderto provide a basic understanding to the reader. This summary is not anextensive overview of the disclosure and it does not necessarilyidentify key features or essential features of the invention, nor doesit delineate the scope of the invention. Its sole purpose is to presentsome concepts disclosed herein in a simplified form as a prelude to themore detailed description that is presented later.

The present disclosure provides a system and method for reading a tapedrive.

In one embodiment, the tape drive is configured to obtain a number ofy-positions for a plurality of servo heads. The tape drive can then beconfigured to determine a change in the y-positions for the first andsecond servo head. This determination can be made by determining that ay-position signal spike is detected at one of the servo heads. Inresponse to determining that a y-position signal spike is detected atone of the servo heads, the offsets of the two servo heads aredetermined. The difference between the two offsets and the offsetreference constant is then determined. If it is determined that thedifference between the servo head offsets is not equal to the offsetreference constant, a control adjustment is performed for the first andsecond servo head.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 is a block diagram illustration of a tape drive system.

FIG. 2 is a block diagram illustration of a process for controlling atape drive system.

FIG. 3 is a block diagram illustration a process 300 for controlling atape drive system.

FIG. 4 is a block diagram illustration of a computer system, accordingto some embodiments.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theembodiments described. On the contrary, the intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the invention.

DETAILED DESCRIPTION

FIG. 1 is a block diagram illustrating components of a tape drive 100,according to one illustrative embodiment. The tape drive 100 is a datastorage device that reads and writes data on a magnetic tape throughmagnetoresistance, thin-film induction, or any other type of dataencoding to a magnetic tape. The tape drive 100 includes a servo head115, a linear tape 116, a servo head 120, position sensor 130, a servohead controller 140, a memory 150, and an application-specificintegrated circuit (ASIC Circuit) 160. In some embodiments, the tapedrive 100 is coupled to the computer system of FIG. 4.

Servo head 115 is a component of the tape drive 100 that reads data fromand writes data to the linear tape 116. Servo head 120 is a component ofthe tape drive 100 that operates similar to servo head 115. For example,servo head 120 also operates to read data from and write data to thelinear tape 116. Servo heads 115 and 120 will be discussed together andwill in some embodiments both be represented by the term “servo heads”.In one embodiment, the linear tape 116 is a magnetic tape medium with atwo dimensional surface. An x dimension runs along the length of thetape, and a y dimension runs across the width of the tape. The lineartape 116 includes a first and a second y-position channel which isencoded along the edges of the track data on the linear tape 116. Forexample, a first y-position channel can be encoded above a data track onthe linear tape 116. A second y-position channel can be encoded below adata track on the linear tape 116. These y-position channels can also bedescribed as servo head channels. These y-position channels providereference data that can be picked up by the servo heads as the servoheads access data tracks on the linear tape 116. Thus, as the data trackis accessed by one or more of the servo heads, the data track is coupledto a y-position channel that is used by the tape drive to identify theposition of the data track being accessed. As a particular servo headreads or writes a data track on a linear tape, it also accesses the twoy-position servo head channels. In some embodiments, the first andsecond y-position channel can be a left and a right y-position servohead channel respectively. In other embodiments, the left channel can bethe second channel and the right channel can be the first channel. Thisposition information can be used by the tape drive 100 to determine theposition of the servo head 115 and/or 120 in relation to data tracks onthe linear tape 116. For example, this information can be used toinstruct the tape drive 100 where to position a servo head to write datato, or read data from, a particular track of data on a linear tape 116.

Position sensor 130 is a component of the tape drive 100 that isconfigured to determine the position of one of more of the servo headsin relation to a position channel on the linear tape 116. The positionsensor 130 is communicably or logically coupled to servo head 115 andservo head 120. It should be noted that each servo head can have acorresponding position sensor 130. In some embodiments, sensor 130 ispart of servo heads 115 and/or 120. Position sensor 130 is configured topick up a signal from the linear tape 116 that includes positioninformation related to the position being read or written by the servohead. Position sensor 130 can include two or more servo channels. Insome embodiments, the servo channels can be a first and a secondchannel. In another embodiment, the servo channels can include 3 or morechannels. In some embodiments, the position sensor 130 allows for they-position (YPOS) information of the servo head, relative to the lineartape 116, to be obtained through these respective channels. In someembodiments information received from the position sensor 130 can beused by the tape drive 100 as feedback control to maintain a correctposition of the servo heads 115 and 120 over the data track on thelinear tape 116.

Servo head controller 140 is a component of the tape drive 100 whichdetermines, based on information received, where to position the servoheads 115 and 120. The tape drive control processes 200 and 300 areexplained in further detail below and in FIG. 2 and FIG. 3. The currentposition of the servo heads can be retrieved from memory 150 by theposition sensor 130. The tape drive 100 can deliver instructions to theservo head controller 140 to perform a control adjustment to apply anadjustment to the servo heads 115 and/or 120.

Memory 150 is a component of the tape drive 100 that stores data thatcan be retrieved by the tape drive 100 to determine that an adjustmentis needed. Memory 150 can be dedicated or undedicated memory. Memory 150can include computer system readable media in the form of volatilememory, such as main memory (e.g., primary RAM) or cache memory. Memory150 can also include non-volatile memory, such as a hard drive, flashmemory, solid state memory, etc. Information related to the YPOS dataretrieved by the position sensor 130 and servo heads 115 and 120 can bestored in and retrieved from memory 150. Factory servo head positioncalibration data and other hardware information, which are establishedduring the manufacturing process of the tape drive, can also be storedand retrieved through memory 150, and will be discussed in furtherdetail below. The servo head position calibration data provides areference point to determine the servo head positions relative to eachother. It should be noted memory 150 is separate from the storage mediumof the linear tape 116.

ASIC circuit 160 is a component of the tape drive 100 that provides thecurrent value of the YPOS to the tape drive 100. In some embodiments,the ASIC circuit 160 is communicably and/or logically coupled to theposition sensor 130. In some embodiments, ASIC circuit 160 is acomponent of the position sensor 130. In other embodiments, the ASICcircuit 160 receives the raw data signal from the position sensor 130,and calculates the YPOS. The ASIC circuit 160 then sends the YPOS datato the tape drive and/or stores the YPOS data in memory 150. Todetermine the YPOS, the ASIC circuit 160 can be configured to look for asignal or indication. This signal or indication can be random noise, anabsence of noise, a predetermined data sequence, or any other signalthat can be determined by the ASIC circuit 160 as representing a YPOS.This signal can be located in the region between two tracks on thelinear tape 116. This signal allows the YPOS signal to be parsed fromthe normal track data by the ASIC circuit and also identify a spike in asignal which may indicate a change in the YPOS.

FIG. 2 is a flow diagram illustrating a process 200 for determining ifan adjustment to one or more servo heads is required, according to anillustrative embodiment. Process 200 begins by obtaining two sets ofy-position information “YPOS” from two y-position channels for servoheads 115 and 120. This is illustrated at step 210. Thus, in someembodiments, process 200 can be described as an obtaining or acquiringprocess. As discussed above, with respect to FIG. 1, the linear tape 116has an x dimension and a y dimension. The ASIC circuit 160 reads thisraw YPOS data along these two YPOS channels and identifies where thechannel is relative to the corresponding servo head. For example, in oneembodiment, a data track can have two sets of YPOS channel information,one represented on the top edge and one represented on the bottom edgeof the data track, with the data track between the two YPOS signalchannels. This allows the servo head to confirm that it is retrievingdata from the data track instructed by the process. In otherembodiments, the YPOS can be located on the edges of the linear tape116, and the tracks can be incrementally separated so that the YPOS ofeach track can be inferred by the tape drive 100. In some embodiments,the width of the track or the track pitch on the linear tape 116 can beless than 50 μm, 10 μm, or 3.75 μm, however any width can be present.

The tape drive 100 positions the servo heads 115 and 120 in proximity tothe tape medium such that the heads are close enough to pick up the YPOSsignal from the passing linear tape 116 in addition to the data on thetrack. This YPOS information can be detected by servo heads 115 and 120.This YPOS information can be used to allow the process to verify theposition of the respective servo head, and further, to verify that thecorrect data is being read, or that the correct data is being writtento, the correct location. A sudden change or discrepancy in this YPOSinformation can be used to determine if the servo head 115 and/or 120requires adjustment. When adjusting a servo head, due to the small tracksize, it is possible that an adjustment can be larger than the trackwidth. Therefore a falsely detected spike could result in an adjustmentthat would place the servo head completely out of the track. Forexample, if a tape drive detects a spike that indicates an offset of 5μm and the track width is 3.75 μm, it is possible that if a 5 μmadjustment is unnecessarily made, the servo head can end up completelyoff the track after the adjustment. Servo head adjustment may beaffected by the physical adjustment properties of the head. In many waysthe heads maximum adjustment capability is greater than the track widthof the tape.

Once the YPOS information is obtained for the plurality of servo heads,the tape drive calculates a servo head offset to determine if the servohead offset has changed for the servo heads. This is illustrated at step215. The servo head offset is the difference between the actual positionof the servo head, and the position that the tape drive 100 hasinstructed the servo head controller 140 to position the servo head at,in relation to the passing linear tape. To determine if the servo headoffset has changed, the process first calculates the position errorsignal (PES). The PES is a calculation depicting the difference betweena current YPOS reference and the calculated offset. In one embodimentthe PES is calculated by:PES1=YPOS1−YPOSref−ch1ch2offset   Equation 1where PES1 is a first position error signal, YPOSref is the YPOSreference number, which is subtracted from a first YPOS (YPOS1), andfrom that difference, the difference between the two channel offsets issubtracted to give the channel 1/channel2 offset (ch1ch2offset). This isrepeated for each PES calculation.

A PES is used as an input associated with the track following control.The PES signal is determined by subtracting a reference value fromposition information obtained from the YPOS information written in thelinear tape 116 (as explained in greater detail above), and bysubtracting from that difference, the ch1ch2offset value.

In one embodiment the channel offset is calculated by:

$\begin{matrix}{{{ch}\; 1{ch}\; 2{offset}} = \frac{\sum\limits_{i = 1}^{n}\left( {{{YPOS}\;{1\lbrack i\rbrack}} - {{YPOS}\;{2\lbrack i\rbrack}}} \right)}{2n}} & {{Equation}\mspace{14mu} 2}\end{matrix}$where “n” is the number or quantity of counts in a threshold, where “i”is the current count, where “YPOS1[i]” is the first YPOS for the currentcount, and where “YPOS2[i]” is the second YPOS for the current count.

To determine the ch1ch2offset for a particular servo head, the YPOS forthe first channel is subtracted from the YPOS of the second channel fora servo head. This difference is repeated for n counts. The sum of thosedifferences between the YPOS for the two servo head channels is thendivided by two times n, where n is the number of counts. The processrepeats this procedure for both servo heads. The process then subtractsthe two different servo head offsets from each other to get an offsetdifference calculation (OffsetDiffCal). In one embodiment theOffsetDiffCal is calculated by:Ch1Ch2offsetL−Ch1Ch2offsetR=OffsetDiffCal   Equation 3where Ch1Ch2offsetL is the offset between the two channels of the firstservo head and where Ch1Ch2offsetR is the offset between the twochannels of the second servo head.

The following is an illustrative example embodiment according toEquation 2. In this example, servo head 115 is a left servo head andservo head 120 is a right servo head. It is understood, by one of skillin the art, that the servo head positions discussed are arbitrary, andthat the left servo head could be servo head 120 and the right could beservo head 115. In this illustrative embodiment, the YPOS of the secondchannel (YPOS2) of the servo head 115 is subtracted from the YPOS of thefirst channel (YPOS1) of the servo head 115 to calculate a left servohead offset (Ch1Ch2offsetL). The YPOS of the second channel of the servohead 120 is then subtracted from the YPOS of the first channel of theservo head 120 to calculate a right servo head offset (Ch1Ch2offsetR).Ch1Ch2offsetL is then subtracted from Ch1Ch2offsetR and an offsetdifference between servo head 115 and servo head 120 is calculated. Bysubtracting the ch1ch2offset for the second servo head from thech1ch2offset for the first servo head, the offset difference calculation(OffsetDiffCal) can be determined.

The linear tape 116 can experience a phenomenon of expansion andcontraction which is called tape dimensional stability. Tape dimensionalstability can be observed as a difference between the YPOS values of theservo head 115 and servo head 120. In order to remove the factor of tapedimensional stability, the PES builds in the correction of the tapedimensional stability based on the difference between the YPOS dataretrieved from the two servo heads. The correction value corresponds toa value obtained by obtaining multiple samples of the difference of theYPOS values provided by the two servo channels on the linear tape 116and dividing the average value thereof by two.

The offset difference can be calculated by subtracting the differencebetween the two sets of servo head channel offsets for the two servoheads 115 and 120. In some embodiments, if the OffsetDiffCal issubstantially equal to a time zero factory calibration constant(OffsetDiffT0) which is determined during the manufacturing process,then no correction may be needed. However, if OffsetDiffCal is notsubstantially equal to OffsetDiffT0, then a changed servo head offset isconfirmed. A change in the servo head offset can indicate that theposition of the servo head has changed in relation to the target datatrack on the linear tape 116. In some embodiments a change in the servohead offset indicates that the linear tape 116 has changed itsproperties or track position relative to one or more servo heads.

A tape medium can exhibits expansion and contraction depending uponenvironmental conditions. These conditions can include temperature,humidity, etc. Values of the above offsets vary. In some embodiments,when the medium expands in the track direction, the offsets can take apositive value. When the medium contracts in the track direction, theoffsets can take a negative value.) In some embodiments, mechanicalconditions can result in a change in the properties of a tape medium,such a tension, slack, etc.

If a change in the servo head offset has occurred, the process can beconfigured so that a determination can be made whether a signal spikehas been detected. This is illustrated at step 220. A signal spike is achange in the servo head offset that continues for a predeterminedthreshold. To determine that a signal spike has been detected, the ASICcircuit 160 takes multiple samples of the Ch1Ch2offset for each servohead 115 and 120 over a period to confirm that the change in the servohead offset is maintained for a specific duration threshold. Theduration can be expressed in, for example, counts, cycles, time, or anyother measurable unit. In some embodiments, when the duration is a unitof time, time can be measured in any useful unit such as seconds,milliseconds (ms), microseconds (μs), etc.

In some embodiments, a count can be an interval of time, a number ofactions, a number of cycles, etc. In some embodiments where the countperiod is a duration of time, the duration of time can be any durationsuch as 1-1000 ms, 1-1000 μs, etc. In other embodiments, where a countis a number of cycles, the cycle can be any detected change such as asignal spike. For example, each time a signal spike is detected, a countis recorded. In other embodiments a counter may begin when a spike isdetected, and for every time period after the spike remains detected thecount is increased. For example, if a spike is measured a counterbegins, for every specified count duration interval the count isincreased. In some embodiments the count duration can be 10 μs, 20 μs,30 μs, 40 μs, 50 μs or more.

In some embodiments, the process can be configured so that if thedetected change in the servo head offset is maintained for at least athreshold, a signal spike is confirmed. In some embodiments, a number ofcounts can be used to indicate a threshold is reached. Any number ofcounts can be used to indicate a count threshold, such as 2, 4, 8, 16,etc., or any number that would allow a signal spike to be measured. Ifthe offset is not maintained for the threshold duration, the process 200returns to step 210, and repeats.

In one illustrative embodiment when a spike is measured, a counter and atimer begin at zero. When the timer reaches a preset count timeduration, such as 50 μs, the count increases by one and the timerresets. This continues until the counter gets to a count threshold. Ifthe count threshold is reached then the process continues. For exampleif the count threshold was set to 16 counts, when the signal spikecontinues for 16 counts, the process confirms that a signal spike ispresent, however if the signal spike does not continue for the number ofcounts required to meet the count threshold, then a signal spike is notmeasured.

If a signal spike was determined to be present, the tape drive 100 canmake a control adjustment. This is illustrated at step 240. A controladjustment is a predetermined correction calculation that the processcan perform to instruct the tape drive 100 how to reposition the servoheads 115 and 120 over the target data track in a corrected position onthe linear tape 116. Thus, after the signal spike is confirmed and thecurrent position of the servo heads is ascertained, the controladjustment can be calculated and executed to accomplish the correctedposition for the servo heads.

In the track following operation during the locate operation of the tapedrive, two state exists, i.e., “acquire” and “following.” “Acquire”refers to a state that continues until control of the head with respectto the target position becomes stable. For example, FIG. 2. “Following”refers to a state that the control has become stable and write/read ispossible. When the YPOS is determined to be stable then the tape drivemakes this state transition and switches into the follow state from theacquire state. During the “following” state, a process can include a setof instructions to select the value closer to the OffsetDiffCal fromCh1Ch2offsetL and Ch1Ch2offsetR.

In some embodiments, when the tape drive 100 is in the acquire state,the tape drive will calculate OffsetDiffCal (equation 3). If the valueof the difference between the OffsetDiffCal and OffsetDiffT0 is lessthan a threshold, then the tape drive with set OffsetRef to be equal toOffsetDiffCal. If the value of the difference between the OffsetDiffCaland OffsetDiffT0 is greater or equal to a threshold, the drive will postan error.

FIG. 3 is a flow diagram illustrating a process 300 for determining if aYPOS continues to be stable for track following.

Process 300 begins by calculating the Ch1Ch2Offset for the left andright servo heads, Ch1Ch2OffsetL and Ch1Ch2OffsetR respectively. This isillustrated at step 305. At this step the process calculates theCh1Ch2Offset for each servo head. For example, by using equation 2. Insome embodiments, the calculation is made by using Y-POS data retrievedfrom the position sensor 130 and ASIC circuit 160. The YPOS data used tomake these calculations is retrieved at step 210 in process 200.

The process 300 continues by determining if the value for Ch1Ch2OffsetLis closer to the OffsetRef. This is shown at step 310. If the value forthe difference between Ch1Ch2OffsetL and OffsetRef is less than thevalue for the difference between Ch1Ch2OffsetR and OffsetRef then theprocess follows path 312.

If the process follows path 312, Ch1Ch2OffsetL is determined to becloser to the OffsetRef, and Ch1Ch2OffsetL is defined to be equal to thevariable ch1ch2offset. This is shown at step 315.

When the value for Ch1Ch2OffsetR is determined to be closer to theOffsetRef, the process follows path 311. If the process follows path311, Ch1Ch2OffsetR is defined to be equal to the variable ch1ch2offset.This is shown at step 320. Thus in some embodiments steps 310, 315, and320 effectively chose the offset calculation from the servo head thathas the lesser offset of the two servo heads. In other embodiments, theprocess can include instructions to define the channel offset from theservo head with the greater offset as the variable ch1ch2offset.

The process continues by determining if the difference of ch1ch2offsetminus OffsetRef is less than a threshold. This is illustrated at step325. If the difference is not less than the threshold, then an errorstate is determined and the process 300 includes instructions to end theprocess. An error state can occur if a read/write operation isterminated or determined to be invalid. This can occur when data is sentto be written or read at a tape drive servo head and confirmation thatthe data is written or retrieved from the tape medium is not able to beconfirmed. An error state can also occur when a threshold is met by anoffset. For example, when the difference between the ch1ch2offset andOffsetRef is not less than a threshold, the tape drive includes a set ofinstructions to define this threshold as an error state.

The tape drive can include a set of instructions to terminate read/writewhen an error state occurs. In other embodiments, the tape drive caninclude a set of instructions to terminate read/write when a thresholdis met or not met. In some embodiments, this threshold can be met by aservo head offset comparison, for example, comparing the differencebetween the ch1ch2offset and OffsetRef and comparing that value with athreshold as explained above. This is illustrated at step 330.

When the difference is less than the threshold, the process determinesthe offset to be valid. This is illustrated at step 335. In someembodiments, at this step the process further includes a set ofinstructions to determine that a signal spike is detected or to performa control adjustment as shown in process 200, steps 220 and 240.

Referring now to FIG. 4, shown is a high-level block diagram of anexample computer system 401 that may be used in implementing one or moreof the methods, tools, and modules, and any related functions, describedherein (e.g., using one or more processor circuits or computerprocessors of the computer), in accordance with embodiments of thepresent disclosure. In some embodiments, the major components of thecomputer system 401 may comprise one or more CPUs 402, a memorysubsystem 404, a terminal interface 412, a storage interface 416, an I/O(Input/Output) device interface 414, and a network interface 418, all ofwhich may be communicatively coupled, directly or indirectly, forinter-component communication via a memory bus 403, an I/O bus 408, andan I/O bus interface unit 410.

The computer system 401 may contain one or more general-purposeprogrammable central processing units (CPUs) 402A, 402B, 402C, and 402D,herein generically referred to as the CPU 402. In some embodiments, thecomputer system 401 may contain multiple processors typical of arelatively large system; however, in other embodiments the computersystem 401 may alternatively be a single CPU system. Each CPU 402 mayexecute instructions stored in the memory subsystem 404 and may includeone or more levels of on-board cache.

System memory 404 may include computer system readable media in the formof volatile memory, such as random access memory (RAM) 422 or cachememory 424. Computer system 401 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 426 can be provided forreading from and writing to a non-removable, non-volatile magneticmedia, such as a “hard drive” or a magnetic tape drive. Although notshown, a magnetic disk drive for reading from and writing to aremovable, non-volatile magnetic disk (e.g., a “floppy disk”), or anoptical disk drive for reading from or writing to a removable,non-volatile optical disc such as a CD-ROM, DVD-ROM or other opticalmedia can be provided. In addition, memory 404 can include flash memory,e.g., a flash memory stick drive or a flash drive. Memory devices can beconnected to memory bus 403 by one or more data media interfaces. Thememory 404 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of various embodiments. System memory 404 can include the tapedrive 100 shown in FIG. 1.

Although the memory bus 403 is shown in FIG. 4 as a single bus structureproviding a direct communication path among the CPUs 402, the memorysubsystem 404, and the I/O bus interface 410, the memory bus 403 may, insome embodiments, include multiple different buses or communicationpaths, which may be arranged in any of various forms, such aspoint-to-point links in hierarchical, star or web configurations,multiple hierarchical buses, parallel and redundant paths, or any otherappropriate type of configuration. Furthermore, while the I/O businterface 410 and the I/O bus 408 are shown as single units, thecomputer system 401 may, in some embodiments, contain multiple I/O businterface units 410, multiple I/O buses 408, or both. Further, whilemultiple I/O interface units are shown, which separate the I/O bus 408from various communications paths running to the various I/O devices, inother embodiments some or all of the I/O devices may be connecteddirectly to one or more system I/O buses.

In some embodiments, the computer system 401 may be a multi-usermainframe computer system, a single-user system, or a server computer orsimilar device that has little or no direct user interface, but receivesrequests from other computer systems (clients). Further, in someembodiments, the computer system 401 may be implemented as a desktopcomputer, portable computer, laptop or notebook computer, tabletcomputer, pocket computer, telephone, smart phone, network switches orrouters, or any other appropriate type of electronic device.

It is noted that FIG. 4 is intended to depict the representative majorcomponents of an exemplary computer system 401. In some embodiments,however, individual components may have greater or lesser complexitythan as represented in FIG. 4, components other than or in addition tothose shown in FIG. 4 may be present, and the number, type, andconfiguration of such components may vary.

One or more programs/utilities 428, each having at least one set ofprogram modules 430 may be stored in memory 404. The programs/utilities428 may include a hypervisor (also referred to as a virtual machinemonitor), one or more operating systems, one or more applicationprograms, other program modules, and program data. Each of the operatingsystems, one or more application programs, other program modules, andprogram data or some combination thereof, may include an implementationof a networking environment. Programs 428 and/or program modules 430generally perform the functions or methodologies of various embodiments.

In some embodiments, the modules 430 may include instructions thatperform the steps of the process, such as process 200 shown in FIG. 2,or the process 300 shown in FIG. 3.

As discussed in more detail herein, it is contemplated that some or allof the operations of some of the embodiments of methods described hereinmay be performed in alternative orders or may not be performed at all;furthermore, multiple operations may occur at the same time or as aninternal part of a larger process.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the variousembodiments. As used herein, the singular forms “a,” “an,” and “the” areintended to include the plural forms as well, unless the context clearlyindicates otherwise. It will be further understood that the terms“includes” and/or “including,” when used in this specification, specifythe presence of the stated features, integers, steps, operations,elements, and/or components, but do not preclude the presence oraddition of one or more other features, integers, steps, operations,elements, components, and/or groups thereof. In the previous detaileddescription of example embodiments of the various embodiments, referencewas made to the accompanying drawings (where like numbers represent likeelements), which form a part hereof, and in which is shown by way ofillustration specific example embodiments in which the variousembodiments may be practiced. These embodiments were described insufficient detail to enable those skilled in the art to practice theembodiments, but other embodiments may be used and logical, mechanical,electrical, and other changes may be made without departing from thescope of the various embodiments. In the previous description, numerousspecific details were set forth to provide a thorough understanding thevarious embodiments. But, the various embodiments may be practicedwithout these specific details. In other instances, well-known circuits,structures, and techniques have not been shown in detail in order not toobscure embodiments.

Different instances of the word “embodiment” as used within thisspecification do not necessarily refer to the same embodiment, but theymay. Any data and data structures illustrated or described herein areexamples only, and in other embodiments, different amounts of data,types of data, fields, numbers and types of fields, field names, numbersand types of rows, records, entries, or organizations of data may beused. In addition, any data may be combined with logic, so that aseparate data structure may not be necessary. The previous detaileddescription is, therefore, not to be taken in a limiting sense.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

Although the present invention has been described in terms of specificembodiments, it is anticipated that alterations and modification thereofwill become apparent to the skilled in the art. Therefore, it isintended that the following claims be interpreted as covering all suchalterations and modifications as fall within the true spirit and scopeof the disclosure.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method of reading a tape with a tape drivecomprising: obtaining a first y-position and a second y-position for afirst servo head; obtaining a third y-position and a fourth y-positionfor a second servo head; determining a change in the y-positions for thefirst servo head and for the second servo head by; determining that a yposition signal spike is detected at one of the servo heads; in responseto determining that a y-position signal spike is detected at one of theservo heads; determining a first servo head offset; determining a secondservo head offset; calculating a difference between the first servo headoffset and the second servo head offset; determining that the differencebetween the first servo head offset and the second servo head offset isnot equal to an offset reference constant; in response to determiningthat the difference between the first servo head offset and the secondservo head offset is not equal to an offset reference constant,preforming a control adjustment for the first and second servo headoffset.
 2. The method of claim 1, wherein calculating furthercomprising: obtaining a position error signal of a servo head; and inresponse to obtaining the position error signal of the servo head,performing a control adjustment of the servo head position on the basisof the obtained position error signal.
 3. The method of claim 1, whereinthe y position is determined by an ASIC circuit.
 4. The method of claim1, wherein the determining that a y position signal spike is detectedfurther comprises determining that the signal spike is maintained for atleast 32 counts.
 5. The method of claim 4, wherein when the signal spikeis not maintained for at least 32 counts, the spike is determined to bea false spike.
 6. The method of claim 1, wherein the first servo headoffset is determined by calculating a difference between the firsty-position and the second y-position of the first servo head.
 7. Themethod of claim 1, wherein the second servo head offset is determined bycalculating a difference between the third y-position and the fourthy-position of the second servo head.
 8. The method of claim 1 furthercomprising: comparing the value of the first servo head offset with thevalue of the second servo head offset to a reference servo head offset,and selecting the servo head offset that is closest to the referenceservo head offset as a representative servo head offset.
 9. The methodof claim 8, wherein the reference servo head offset is a factorycalibration offset determined during the manufacturing process of thetape drive.
 10. A computer program product comprising a computerreadable storage medium having program instructions embodied therein,the program instructions executable by a first computing device toperform a method comprising: obtaining a first y-position and a secondy-position for a first servo head; obtaining a third y-position and afourth y-position for a second servo head; determining a change in they-positions for the first servo head and for the second servo head by;determining that a y position signal spike is detected at one of theservo heads; in response to determining that a y-position signal spikeis detected at one of the servo heads; determining a first servo headoffset; determining a second servo head offset; calculating a differencebetween the first servo head offset and the second servo head offset;determining that the difference between the first servo head offset andthe second servo head offset is not equal to an offset referenceconstant; in response to determining that the difference between thefirst servo head offset and the second servo head offset is not equal toan offset reference constant, preforming a control adjustment for thefirst and second servo head offset.
 11. The computer program product ofclaim 10, wherein calculating further comprising: obtaining a positionerror signal of a servo head; and in response to obtaining the positionerror signal of the servo head, performing a control adjustment of theservo head position on the basis of the obtained position error signal.12. The computer program product of claim 10, wherein the y position isdetermined by an ASIC circuit.
 13. The computer program product of claim10, wherein the determining that a y position signal spike is detectedfurther comprises determining that the signal spike is maintained for atleast 32 counts.
 14. The computer program product of claim 10, whereinwhen the signal spike is not maintained for at least 32 counts, thespike is determined to be a false spike.
 15. The computer programproduct of claim 10, wherein the first servo head offset is determinedby calculating a difference between the first y-position and the secondy-position of the first servo head.
 16. The computer program product ofclaim 10, wherein the second servo head offset is determined bycalculating a difference between the third y-position and the fourthy-position of the second servo head.
 17. A tape drive system comprising:at least one memory storing an offset reference constant; a first servohead configured to read track position information from a magnetic tape;a second servo head configured to read track position information from amagnetic tape; at least one position sensor coupled to the first andsecond servo heads, configured to obtain a first, second, third, andfourth y-position information from the servo heads; an applicationspecific integrated circuit (ASIC) coupled to the at least one positionsensor configured to: determine a first servo head offset; determine asecond servo head offset; calculate a difference between the first servohead offset and the second servo head offset; determine that thedifference between the first servo head offset and the second servo headoffset is not equal to the offset reference constant; generate a controladjustment for the first servo head or the second servo head.
 18. Thesystem of claim 17, wherein the ASIC is further configured to: obtain aposition error signal of a servo head; perform a control adjustment ofthe first servo head and second servo head positions on the basis of theobtained position error signal.
 19. The system of claim 17, wherein theASIC is further configured so that when a difference between the firstand second servo head offsets are not equal to the offset referenceconstant, the ASIC further determines that the offset difference ismaintained for at least 32 counts.
 20. The system of claim 17, whereinthe ASIC is further configured to: compare the value of the first servohead offset with the value of the second servo head offset to areference servo head offset, and select a servo head offset from thefirst and second servo head offset that is closest to the referenceservo head offset as a representative servo head offset.